package com.wenjie.service.del;//package com.wenjie.service;
//
//import cn.hutool.json.JSONObject;
//import org.junit.Test;
//import org.springframework.stereotype.Component;
//
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//@Component
//public class CodeTemplateTools1 {
//
//
//    public String handle_tool(JSONObject tableJson, String templateValue) {
//        String resStr = templateValue;
//        String regex = "(\\$[a-zA-Z\\._]+)\\(([^\\)]*?)\\)";
//        Pattern pattern = Pattern.compile(regex);
//        Matcher matcher = pattern.matcher(templateValue);
//
//        while (matcher.find()) {
//            String group = matcher.group(1);
//            String value = matcher.group(2);
//            String methodName = group.substring(1);
//
//            // 将数据库类型转为Java类型
//            if ("db_to_java".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), DbToJava(value));
//            }
//
//            // 首字母大写方法
//            if ("first_big".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), firstBig(value));
//            }
//
//            // 首字母小写方法
//            if ("first_small".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), firstSmall(value));
//            }
//
//            // 将下划线分割为首字母大写命名(类名)
//            if ("class_to_java".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), classToJava(value));
//            }
//
//            // 将下划线分割为驼峰命名(属性名)
//            if ("variable_to_java".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), variableToJava(value));
//            }
//
//            // 获取当前的时间 转为 yyyy-MM-dd HH:mm:ss
//            if ("get_time".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), getTime(value));
//            }
//
//            // 获取秒级时间戳
//            if ("get_timestamp_by_m".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), getTimestampByM(value));
//            }
//
//            // 获取毫秒级时间戳
//            if ("get_timestamp_by_ms".equals(methodName)) {
//                resStr = resStr.replace(matcher.group(), getTimestampByMS(value));
//            }
//            // 获取当前的时间
//        }
//        return resStr;
//    }
//
//    /**
//     * @Description 将数据库类型转换为Java类型
//     * @author wenjie
//     * @date 2024/8/21 15:17
//     */
//    private String DbToJava(String value) {
//        String dbType = value.trim();
//        String javaType;
//        if ("int".equalsIgnoreCase(dbType) || "integer".equalsIgnoreCase(dbType)) {
//            javaType = "int";
//        } else if ("bigint".equalsIgnoreCase(dbType)) {
//            javaType = "long";
//        } else if ("smallint".equalsIgnoreCase(dbType)) {
//            javaType = "short";
//        } else if ("tinyint".equalsIgnoreCase(dbType)) {
//            javaType = "byte";
//        } else if ("float".equalsIgnoreCase(dbType)) {
//            javaType = "float";
//        } else if ("double".equalsIgnoreCase(dbType)) {
//            javaType = "double";
//        } else if ("decimal".equalsIgnoreCase(dbType) || "numeric".equalsIgnoreCase(dbType)) {
//            javaType = "java.math.BigDecimal";
//        } else if ("char".equalsIgnoreCase(dbType)) {
//            javaType = "String";
//        } else if ("varchar".equalsIgnoreCase(dbType) || "text".equalsIgnoreCase(dbType)) {
//            javaType = "String";
//        } else if ("date".equalsIgnoreCase(dbType)) {
//            javaType = "java.sql.Date";
//        } else if ("time".equalsIgnoreCase(dbType)) {
//            javaType = "java.sql.Time";
//        } else if ("timestamp".equalsIgnoreCase(dbType)) {
//            javaType = "java.sql.Timestamp";
//        } else if ("blob".equalsIgnoreCase(dbType)) {
//            javaType = "byte[]";
//        } else if ("clob".equalsIgnoreCase(dbType)) {
//            javaType = "String";
//        } else {
//            javaType = "Unknown Type";
//        }
//
//        return javaType;
//    }
//
//
//    /**
//     * @Description 首字母大写
//     * @author wenjie
//     * @date 2024/8/21 15:21
//     */
//    private String firstBig(String value) {
//        if (value == null || value.isEmpty())
//            return value;
//        return value.substring(0, 1).toUpperCase() + value.substring(1);
//    }
//
//
//    /**
//     * @Description 首字母小写
//     * @author wenjie
//     * @date 2024/8/21 15:32
//     */
//    private String firstSmall(String value) {
//        if (value == null || value.isEmpty())
//            return value;
//        return value.substring(0, 1).toLowerCase() + value.substring(1);
//    }
//
//
//    /**
//     * @Description _将其设置为首字母大写的形式
//     * @author wenjie
//     * @date 2024/8/21 15:28
//     */
//    private String classToJava(String s) {
//        if (s == null) {
//            return null;
//        }
//        StringBuilder camelCaseStr = new StringBuilder();
//        String[] parts = s.split("_");
//        for (String part : parts) {
//            camelCaseStr.append(part.substring(0, 1).toUpperCase()).append(part.substring(1).toLowerCase());
//        }
//        return camelCaseStr.toString();
//    }
//
//
//    /**
//     * @Description _将其设置为驼峰命名的形式
//     * @author wenjie
//     * @date 2024/8/21 15:28
//     */
//    private String variableToJava(String s) {
//        return firstSmall(classToJava(s));
//    }
//
//    /**
//     * @Description 获取当前的时间 转为 yyyy-MM-dd HH:mm:ss
//     * @author wenjie
//     * @date 2024/8/21 15:41
//     */
//    private String getTime(String s) {
//        Date date = new Date();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String formattedDate = sdf.format(date);
//        return formattedDate;
//    }
//
//    /**
//     * @Description 获取秒级时间戳
//     * @author wenjie
//     * @date 2024/8/21 15:43
//     */
//    private String getTimestampByM(String s) {
//        long time = new Date().getTime() / 1000;
//        return String.valueOf(time);
//    }
//
//
//    /**
//     * @Description 获取毫秒级时间戳
//     * @author wenjie
//     * @date 2024/8/21 15:44
//     */
//    private String getTimestampByMS(String s) {
//        long time = new Date().getTime();
//        return String.valueOf(time);
//    }
//
//
//    @Test
//    public void test() {
//        String value = "name_is_xiaomign";
//        System.out.println(variableToJava(value));
//
//    }
//
//
//}
